﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Torneo.Entidades;

namespace Torneo.BusinessLogic
{
    public class EmparejamientoBLL
    {
        public void AgregarEmparejamiento(Emparejamiento emparejamiento)
        {
            var unityOfWork = new Torneo.Repository.UnityOfWork();
            unityOfWork.EmparejamientoRepository.AgregarEmparejamiento(emparejamiento);
            unityOfWork.SaveChanges();
            unityOfWork.Dispose();
        }

        public void EliminarEmparejamiento(Emparejamiento emparejamiento)
        {
            var unityOfWork = new Torneo.Repository.UnityOfWork();
            unityOfWork.EmparejamientoRepository.EliminarEmparejamiento(emparejamiento);
            unityOfWork.SaveChanges();
            unityOfWork.Dispose();
        }

        public List<Emparejamiento> ObtenerEmparejamientos()
        {
            var unityOfWork = new Torneo.Repository.UnityOfWork();
            var emparejamientos = unityOfWork.EmparejamientoRepository.ObtenerTodos();
            unityOfWork.SaveChanges();
            unityOfWork.Dispose();
            return emparejamientos.ToList();
        }

        public void ModificarEmparejamiento(Emparejamiento emparejamiento)
        {
            var unityOfWork = new Torneo.Repository.UnityOfWork();
            unityOfWork.EmparejamientoRepository.ModificarEmparejamiento(emparejamiento);
            unityOfWork.SaveChanges();
            unityOfWork.Dispose();
        }

        public Emparejamiento ObtenerEmparejamientoPorId(int id)
        {
            var unityOfWork = new Torneo.Repository.UnityOfWork();
            var emparejamiento = unityOfWork.EmparejamientoRepository.ObtenerEmparejamientoPorId(id);
            unityOfWork.SaveChanges();
            unityOfWork.Dispose();
            return emparejamiento;
        }

        public List<Emparejamiento> ObtenerEmparejamientosSinResultado()
        {
            var unityOfWork = new Torneo.Repository.UnityOfWork();
            var emparejamientos = unityOfWork.EmparejamientoRepository.ObtenerEmparejamientosSinResultado(1);
            if (emparejamientos.Count > 0)
            {
                unityOfWork.Dispose();
                return emparejamientos.ToList();
            }
            else
            {
                var emparejamientosF2 = unityOfWork.EmparejamientoRepository.ObtenerEmparejamientosSinResultado(2);
                if (emparejamientosF2.Count > 0)
                {
                    unityOfWork.Dispose();
                    return emparejamientosF2.ToList();
                }
                else
                {
                    var emparejamientosF3 = unityOfWork.EmparejamientoRepository.ObtenerEmparejamientosSinResultado(3);
                    unityOfWork.Dispose();
                    return emparejamientosF3.ToList();
                }
            }
            
        }
    }
}
